06. 객체 지도

📌 Contents

  • 길을 묻는 방법 === 기능적이고 해결책 지향적인 접근법: 재사용하기 힘듬
  • 지도를 보는 방법 === 구조적이고 문제 지향적인 접근법: 범용적이고 이해하기 쉬우며 변경에 안정적
  • 전통적인 소프트웨어 개발 방법은 변경이 빈번하게 발생하는 기능에 안정적인 구조를 종속시킴
  • 객체지향 개발 방법은 안정적인 구조에 변경이 빈번하게 발생하는 기능을 종속시킴
  • 이번 장은 기능이 아니라 구조를 바탕으로 시스템을 분할하는 객체지향의 또 다른 측면에 대한 장임

📌 기능 설계 대 구조 설계

  • 모든 소프트웨어 제품의 설계는 기능 측면 설계와, 구조 측면 설계 두 가지 측면이 존재
  • 기능 측면 설계는 제품이 사용자를 위해 무엇을 할 수 있는지에 초점을 맞춤
  • 구조 측면 설계는 제품의 형태가 어떠해야 하는지에 초점을 맞춤
  • 설계의 가장 큰 도전은 기능과 구조라는 두 가지 측면을 함께 녹여 조화를 이루도록 만드는 것


  • 훌륭한 기능은 훌륭한 소프트웨어를 만드는 충분조건
  • 훌륭한 설계는 훌륭한 소프트웨어를 만들기 위한 필요조건
  • 기능이 좋아야 하지만 새로운 기능을 추가하는 것도 중요함
  • 새로운 기능을 안정적으로 추가하기 위해서 좋은 설계가 필요함
  • 사용자의 요구사항은 계속 변하기 때문에 좋은 설계가 중요함
  • 미래는 예측이 불가능하기 때문에 좋은 설계는 미래를 예측해 설계해 반영하는 것이 아니라 변경할 수 있는 여지를 남겨 놓은 것


  • 객체지향은 객체에 구조에 집중하고 기능이 객체의 구조를 따르게 만듬
  • 시스템 기능은 더 작은 책임으로 분할되고 적절한 객체에게 분배되기 때문에 기능이 변경되더라도 객체 간의 구조는 그대로 유지
    : 객체를 기반으로 책임과 역할을 식별하고 메시지를 기반으로 객체들의 협력 관계를 구축하는 이유
  • 안정적인 객체 구조는 변경을 수용할 수 있는 유연한 소프트웨어를 만들 수 있는 기반을 제공함

Note

객체 지도는 빠르게 변화하는 기능을 수용할 수 있는 자리를 제공한다.
객체 지도는 안정적이며 재사용 가능하면서도 범용적이다.
사람들에게 길을 묻지 마라. 객체를 이용해 지도를 만들어라.
기능은 지도에 표시된 길을 따라 자연스럽게 흘러갈 것이다.

📌 두 가지 재료: 기능과 구조

  • 객체지향 세계를 구축하기 위해서는 사용자에게 제공할 기능과 기능을 담을 안정적인 구조라는 재료가 준비돼 있어야 함
  • 기능: 사용자가 자신의 목표를 달성하기 위해 사용할 수 있는 시스템의 서비스
  • 구조: 시스템의 기능을 구현하기 위한 기반. 기능 변경을 수용할 수 있도록 안정적이여야 함


  • 기능과 구조를 표한하기 위해 일관되게 적용할 수 있는 두 가지 기법
    • 구조는 사용자나 이해관계자들이 도메인(domain)에 관해 생각하는 개념과 개념들 간의 관계로 표현한다.
    • 기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위로 표현한다.


  • 일반적으로 기능을 수집하고 표현하기 위한 기법을 유스케이스 모델링이라고 하고,
  • 구조를 수집하고 표한하기 위한 기법을 도메인 모델링이라고 함
  • 두 가지 모델링 활동 결과물을 각각 유스케이스도메인 모델이라고 함

📌 안정적인 재료: 구조

도메인 모델

  • 사용자가 프로그램을 사용하는 대상 분야를 도메인이라고 함
  • 도메인 모델에서 모델은 대상을 추상화하고 단순화한 것
  • 모델은 복잡성을 관리하기 위해 사용하는 기본적인 도구
  • 즉, 도메인 모델이란 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태임


  • 도메인 모델은 소프트웨어 개발과 관련된 이해관계자들이 도메인에 대해 생각하는 관점임
    ex) 은행 업무에 종사하는 사람들은 은행 도메인을 고객과 계좌 사이의 돈의 흐름으로 이해함
        중고 자동차 판매상은 구매되는 자동차와 판매되는 자동차의 교환으로 자동차 도메인을 바라봄
        게임 플레이어들은 게임 도메인을 캐릭터와 몬스터, 그리고 몬스터가 떨구는 아이템 간의 관계로 파악함
        프로그래밍에 종사하는 사람들은 프로그래밍 도메인을 커피를 입력으로 코드를 출력하는 함수로 파악함
    
  • 소프트웨어의 도메인이 무엇이건 상관없이 그곳에는 항상 도메인과 관련된 사람들이 도메인을 바라보는 모델이 존재함


  • 도메인 모델은 이해관계자들이 바라보는 멘탈 모델(Mental Model)
  • 멘탈 모델이란 사람들이 자기 자신, 다른 사람, 환경, 자신이 상호작용하는 사물들에 대해 갖는 모형임
  • 소프트웨어 사용자들은 도메인에 존재하는 현상을 이해하고 현상에 반응하기 위해 도메인과 관련된 멘탈 모델을 형성함


  • 노먼은 멘탈 모델을 세 가지 이미지로 구분
    • 사용자 모델: 사용자가 제품에 대해 가지고 있는 개념들의 모습
    • 디자인 모델: 설계자가 마음 속에 갖고 있는 시스템에 대한 개념화
    • 시스템 이미지: 최종 제품
  • 설계자는 디자인 모델을 기반으로 만든 시스템 이미지가 사용자 모델을 정확하게 반영하도록 노력해야 함
  • 도메인 모델은 도메인에 대한 사용자 모델, 디자인 모델, 시스템 이미지를 포괄하도록 추상화한 소프트웨어 모델임
  • 즉, 도메인 모델은 소프트웨어에 대한 멘탈 모델임

도메인의 모습을 담을 수 있는 객체지향

  • 도메인 모델이란 사용자들이 도메인을 바라보는 관점이며, 설계자가 시스템의 구조를 바라보는 관점인 동시에 소프트웨어 안에 구현된 코드의 모습 그 자체임
  • 따라서 도메인 모델의 세 가지 측면을 모두 모델링할 수 있는 유사한 모델링 패러다임을 사용할수록 소프트웨어 개발이 쉬워질 것임
  • 이런 요구사항을 가장 범용적으로 만족시킬 수 있는 거의 유일한 모델링 패러다임은 객체지향
  • 객체지향을 이용하면 도메인에 대한 사용자 모델, 디자인 모델, 시스템 이미지가 모두 유사한 모습을 유지하도록 만드는 것이 가능함
  • 객체지향의 이러한 특징을 연결완전성, 또는 표현적 차이라고 함

표현적 차이

  • 소프트웨어 객체는 현실 객체에 대한 추상화하 아니라 은유 관계임
  • 모방을한 것이 아니라 은유를 통해 재창조 한 것임
  • 따라서 소프트웨어 객체는 현실 객체가 갖지 못한 특성을 갖거나, 하지 못하는 행동을 할 수 있음
  • 소프트웨어 객체는 현실 객체를 왜곡한다 하더라도 현실 객체의 특성을 토대로 구축됨
  • 이처럼 소프트웨어 객체와 현실 객체 사이의 의미적 거리를 가리켜 표현적 차이 또는 의미적 차이라고 함


  • 대부분의 소프트웨어 도메인은 현실에 존재하지 않는 가상의 세계를 대상으로 함
  • 그렇기 때문에 소프트웨어 객체를 창조하기 위해 우리가 은유해야 하는 대상은 바로 도메인 모델임
  • 즉, 소프트웨어 객체는 그 대상이 현실적인지, 현실적이지 않은지에 상관 없이 도메인 모델을 통해 표현되는 도메인 객체들을 은유해야 함
  • 도메인 모델을 기반으로 설계하고 구현하는 것은 사용자가 도메인을 바라보는 관점을 그대로 코드에 반영할 수 있게 해 표현의 차이는 줄어들 것이며, 사용자의 멘탈 모델이 그대로 코드에 녹아 스며들게 될 것임
  • 코드의 구조가 도메인의 구조를 반영하기 때문에 도메인을 이해하면 코드를 이해하기 쉬움
  • 도메인 모델은 코드 안에 존재하는 미로를 해쳐나갈 수 있는 지도를 제공함

불안정한 기능을 담는 안정적인 도메인 모델

  • 도메인 모델을 기반으로 코드를 작성하는 두 번째 이유는 도메인 모델이 제공하는 구조가 상대적으로 안정적이기 때문
  • 도메인 모델이 안정적인 이유는 도메인 모델이 사용자가 도메인을 바라보는 관점을 반영해 소프트웨어를 설계하고 구현하기 때문
    • 사용자들은 누구보다도 도메인의 ‘본질적인’ 측면을 가장 잘 이해하고 있음: 사용자들은 도메인을 구성하는 중요한 개념과 개념 간의 관계를 가장 잘 알고 있는 사람들임
    • 본질적이라는 것은 변경이 적고 비교적 그 특성이 오랜 시간 유지된다는 것을 의미
    • 즉, 사용자 모델에 포함된 개념과 규칙은 변경될 확률이 적기 때문에 사용자 모델을 기반으로 설계와 코드를 만들면 변경에 쉽게 대처할 수 있는 가능성이 커짐
    • 이것은 도메인 모델이 기능을 담을 수 있는 안정적인 구조를 제공할 수 있음을 의미

Note

결론적으로 안정적인 구조를 제공하는 도메인 모델을 기반으로 소프트웨어의 구조를 설계하면 변경에 유연하게 대응할 수 있는 탄력적인 소프트웨어를 만들 수 있다.
도메인 모델은 여러분이 기능을 구현할 때 참조할 수 있는 궁극적인 지도다.

  • 비록 도메인 모델이 도메인과 관련된 중요한 개념과 관계를 보여준다고 해도 실제로 사용자에게 중요한 것은 도메인 모델이 아니라 소프트웨어의 기능임
  • 소프트웨어의 존재 이유는 사용자가 원하는 목표를 달성할 수 있는 다양한 기능을 제공하는 것
  • 객체지향 커뮤니티에서는 오래 전부터 소프트웨어의 기능을 기술하기 위해 유스케이스라는 유용한 기법을 사용함

📌 불안정한 재료: 기능

유스케이스

  • 사용자의 목표를 달성하기 위해 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 텍스트로 정리한 것을 유스케이스라고 함
  • 앨리스터 코오번은 유스케이스를 다음과 같이 설명함
유스케이스는 시스템의 이해관계자들 간의 계약을 행위 중심으로 파악한다.
유스케이스는 이해관계자들 중에서 일차 액터라 불리는 행위자의 요청에 대한 시스템의 응답으로서,
다양한 조건하에 있는 시스템의 행위를 서술한다.
일차 액터는 어떤 목표를 달성하기 위해 시스템과의 상호작용을 시작한다.
시스템은 모든 이해관계자들의 요구에 응답하고 이해관계를 보호해야 한다.
특별한 요청과 관계되는 조건에 따라 서로 다른 일련의 행위 혹은 시나리오가 전개될 수 있다.
유스케이스는 이렇게 서로 다른 시나리오를 묶어 준다.
  • 위 글에서 일차 액터(primary actor)란 시스템의 서비스 중 하나를 요청하는 이해관계자로, 하나의 목표를 가지고 유스케이스를 시작하는 액터를 의미함
  • 일반적으로 시스템과 연동하는 외부 시스템 역시 일차 액터의 범주로 포함시킴


  • 유스케이스의 가치는 사용자들의 목표를 중심으로 시스템의 기능적인 요구사항들을 이야기 형식으로 묶을 수 있다는 점
  • 이는 각 기능이 유기적인 관계를 지닌 체계를 이룰 수 있게 함: 요구사항을 기억하고 관리하는데 필요한 다양한 정신적 과부화를 줄임
  • 유스케이스는 공통의 사용자 목표를 통해 강하게 연관된 시나리오의 집합
// 예제) 정기예금 이자 계산 유스케이스

유스케이스명: 중도 해지 이자액을 계산한다

일차 액터: 예금주

주요 성공 시나리오:
  1. 예금주가 정기예금 계좌를 선택한다.
  2. 시스템은 정기예금 계좌 정보를 보여준다.
  3. 예금주가 금일 기준으로 예금을 해지할 경우 지급받을 수 있는 이자 계산을 요청한다.
  4. 시스템은 중도 해지 시 지급받을 수 있는 이자를 계산한 후 결과를 사용자에게 제공한다.

확장:
  3a. 사용자는 해지 일자를 다른 일자로 입력할 수 있다.

유스케이스의 특성

  1. 유스케이스는 사용자와 시스템 간의 상호작용을 보여주는 "텍스트"다.
    • 유스케이스는 다이어그램이 아님. 중요한 것은 유스케이스 안에 포함돼 있는 상호작용의 흐름
    • 유스케이스의 핵심은 사용자와 시스템 간의 상호작용을 일련의 이야기 흐름으로 표한하는 것
  2. 유스케이스는 하나의 시나리오가 아니라 여러 시나리오들의 집합이다.
    • 이자 계산 유스케이스는 당일까지의 이자액 계산과 특정일 까지의 이자액 계산이라는 두 가지 시나리오를 포함
    • 시나리오를 유스케이스 인스턴스(use case instance)라고도 함
  3. 유스케이스는 단순한 피처(feature) 목록과 다르다.
    • 피처는 시스템이 수행해야하는 기능의 목록을 단순하게 나열한 것: 피처들을 연관 없는 독립적인 기능으로 보이게끔 만듬
    • 피처들을 유스케이스로 묶고 묶고 사용자의 상호작용 흐름 속에서 피처들을 포함하는 이야기를 제공함으로써 시스템의 기능에 대해 의사소통할 수 있는 문맥을 얻을 수 있음
    • 유스케이스의 강점은 이야기를 통해 연관된 기능들을 함께 묶을 수 있다는 점임
  4. 유스케이스는 사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야 한다.
    • 유스케이스는 자주 변경되는 사용자 인터페이스 요소는 배제하고, 사용자 관점에서 시스템의 행위에 초점을 맞춤
    • 사용자 인터페이스를 배제한 유스케이스 형식을 본질적인 유스케이스(essential use case)라고 함
  5. 유스케이스는 내부 설계와 관련된 정보를 포함하지 않는다.
    • 유스케이스의 목적은 내부 설계를 설명하는 것이 아님
    • 유스케이스에서 객체 설계로의 전환은 공학적인 규칙과 원칙을 기반으로 한 변환 작업이 아니라
    • 경험과 상식과 의사소통을 기반으로한 창조 작업임

유스케이스는 설계 기법도, 객체지향도 아니다

  • 유스케이스에는 시스템의 내부 구조나 실행 메커니즘에 관한 어떤 정보도 제공하지 않음
  • 단지 사용자가 시스템을 통해 무엇을 얻을 수 있고 어떻게 상호작용할 수 있느냐에 관한 정보만 기술됨
  • 유스케이스는 객체지향과 상관이 없다. 다른 패러다임에서도 적용 가능하고, 객체지향에서도 유스케이스 이외 방법으로 요구사항 명시 가능
  • 유스케이스는 단지 기능적 요구사항을 사용자의 목표라는 문맥을 중심으로 묶기 위한 정리 기법


  • 유스케이스를 객체로 변환하는 작업은 순수하게 창조적이고 예술적인 작업임
  • 유스케이스는 객체의 구조나 책임에 대해 어떤 정보도 제공하지 않음
  • 유스케이스 텍스트 안에서 도메인 모델에서 사용할 용어에 대한 힌트를 얻을 수 있긴 하지만, 도메인 모델을 구축할 수 있는 모든 정보가 포함되어 있지 않다. 영감을 불러일으킬 수 있는 약간의 힌트만 있을 뿐!

📌 재료 합치기: 기능과 구조의 통합

  • 도메인 모델은 안정적인 구조를 개념화하기 위해, 유스케이스는 불안정한 기능을 서술하기 위해 가장 일반적으로 사용되는 도구
  • 변경에 유연한 소프트웨어를 만들기 위해서는 유스케이스에 정리된 시스템의 기능을 도메인 모델을 기반으로 한 객체들의 책임으로 분배해야함
  • 시스템은 사용자와 만나는 경계에서 사용자의 목표를 만족시키기 위해 사용자와의 협력에 참여하는 커다란 객체임
  • 사용자에게 시스템이 수행하기로 약속한 기능은 결국 시스템의 책임으로 볼 수 있음
  • 시스템이 수행해야 하는 커다란 규모의 책임은 시스템 안에 살아가는 더 작은 크기의 객체들의 협력을 통해 구현될 수 있음


  • 책임 주도 설계의 적용
    • 협력의 출발을 장식하는 첫 번째 메시지는 시스템의 기능을 시스템의 책임으로 바꾼 후 얻어진 것임
    • 시스템에 할당된 커다란 책임은 시스템 안의 작은 규모의 객체들이 수행해야 하는 작은 책임으로 세분화 됨
    • 이 때 도메인 모델에 포함된 개념을 은유하는 소프트웨어 객체를 선택해야 함
      • 소프트웨어와 코드 사이의 표현적 차이를 줄이는 첫걸음
    • 협력을 완성하는데 필요한 메시지를 식별하면서 객체들에게 책임을 할당해 나감
    • 클래스를 추가하고 속성과 함께 메서드를 구현하면 시스템의 기능 완성


  • 유스케이스는 사용자에게 제공할 기능을 시스템의 책임으로 보게 함으로써 객체 간의 안정적인 구조에 책임을 분배할 수 있는 출발점을 제공함
  • 도메인 모델은 기능을 수용하기 위해 은유할 수 있는 안정적인 구조를 제공함
  • 책임-주도 설계는 유스케이스로부터 첫 번째 메시지와 사용자가 달성하려는 목표를, 도메인 모델로부터 기능을 수용할 수 있는 안정적인 구조를 제공받아 실제로 동작하는 객체들의 협력 공동체를 창조함
  • 책임-주도 설계는 두 가지 기본 재료인 유스케이스와 도메인 모델을 통합하지만, 반드시 두 가지 재료가 필요한 것은 아니고 두 가지 재료가 책임-주도 설계에서만 사용되는 것이 아님
  • 중요한 것은 견고한 객체지향 애플리케이션을 개발하기 위해서는 사용자의 관점에서 시스템의 기능을 명시하고, 사용자와 설계자가 공유하는 안정적인 구조를 기반으로 기능을 책임으로 변환하는 체계적인 절차를 따라야 한다는 것임


  • 도메인 모델이 안정적인 이유: 도메인 모델이 구성하는 요소의 특징
    • 도메인 모델을 구성하는 개념은 비즈니스가 없어지거나 완전히 개편되지 않는 한 안정적으로 유지됨
    • 도메인 모델을 구성하는 개념 간의 관계는 비즈니스 규칙을 기반으로 하기 때문에 비즈니스 정책이 크게 변경되지 않는 한 안정적으로 유지됨
  • 비즈니스 정책이나 규칙이 크게 변경되지 않는 한 시스템의 기능이 변경되더라도 객체 간의 관계는 일정하게 유지됨
  • 기능적인 요구사항이 변경될 경우 책임과 객체 간의 대응 관계만 수정될 뿐임
  • 이는 변경에 대한 파급효과를 최소화하고 요구사항 변경에 유연하게 대응할 수 있는 시스템을 구축할 수 있게 함


  • 객체지향의 가장 큰 장점은 도메인을 모델링하기 위한 기법과 도메인을 프로그래밍하기 위해 사용하는 기법이 동일하다는 점임
  • 따라서 도메인 모델링에서 사용한 객체와 개념을 프로그래밍 설계에서의 객체와 클래스로 매끄럽게 변환할 수 있음
  • 객체지향의 이 같은 특성을 연결완전성이라고 함


  • 객체지향이 강력한 이유는 연결완전성의 역방향 역시 성립된다는 것임
  • 즉, 코드의 변경으로부터 도메인 모델의 변경 사항을 유추할 수 있음
  • 이처럼 모델에서 코드로의 매끄러운 흐름을 의미하는 연결완전성과 반대로 코드에서 모델로의 매끄러운 흐름을 의미하는 것을 가역성(reversibility)이라고 함

Note

안정적인 도메인 모델을 기반으로 시스템의 기능을 구현하라.
도메인 모델과 코드를 밀접하게 연관시키기 위해 노력하라.
그것이 유지보수하기 쉽고 유연한 객체지향 시스템을 만드는 첫걸음이 될 것이다.

❓ Questions

❓ 도메인이라는 단어가 잘 와닿지 않는다 😢

  • 원래 나는 도메인이라는 말은 인터넷 주소의 의미로만 알고 있었다.
  • 그런데 여기서 말하는 도메인은 분야에 대한 얘기이다.
  • 그래서 도메인 모델을 해당 분야에 대한 추상화, 단순화로 본다.
  • 사용자가 도메인을 바라보는 관점이 도메인 모델이라고 한다.
  • 그래서 도메인 모델을 은유해 설계를 하면 사용자가 보는 관점과 소프트웨어 사이의 표현적 차이가 줄어든다


  • 그런데 도메인 모델을 또 멘탈 모델이라고도 했다.
  • 멘탈 모델이란 사람들이 자기 자신, 다른 사람, 환경, 자신이 상호작용하는 사물들에 대해 갖는 모형이라고 하는데,
  • 멘탈 모델은 사용자 모델, 디자인 모델, 시스템 이미지로 구분되고,
  • 도메인 모델은 도메인에 대한 사용자 모델, 디자인 모델, 시스템 이미지를 포괄하도록 추상화한 소프트웨어 모델이라고 책에 나온다.
  • 설계자는 디자인 모델을 기반으로 만든 시스템 이미지가 사용자 모델을 정확하게 반영하도록 노력해야 한다고도 나온다.
  • 이 부분을 보면 사용자 모델이 도메인 모델 같은데 왜 도메인 모델이 사용자 모델, 디자인 모델, 시스템 이미지를 포괄하도록 추상화한 소프트웨어 모델이지???
  • 디자인 모델이 소프트웨어이고 사용자 모델이 도메인 모델이여서 둘 사이의 표현적 차이를 최대한 줄여서 시스템 이미지(최종 제품)을 만드는 것 아닌가???


  • 책에서 도메인 모델이란 사용자들이 도메인을 바라보는 관점이며, 설계자가 시스템의 구조를 바라보는 관점인 동시에 소프트웨어 안에 구현된 코드의 모습 그 자체임 이라는 문장이 나온다.
  • 이 문장을 보고 든 생각은 도메인 모델은 사용자들이 도메인을 바라보는 관점 즉, 사용자 모델과 비슷한 의미 같은데, 이 도메인 모델을 보고 설계자가 시스템의 구조를 바라보고, 그것을 바탕으로 코드를 구현하기 때문에 결국, 도메인 모델이 사용자 모델이면서 디자인 모델과 시스템 이미지를 포괄한다고 책에서 말하고 있는 것 같다.

❓ 연결완전성이란?

  • 이 질문은 이 책의 첫 장에서 했던 질문이다.

실세계의 사물을 기반으로 소프트웨어 객체를 식별하고 구현까지 이어간다는 개념은 객체지향 설계의 핵심 사상인 연결완전성(seamlessness)을 설명하는데 적합한 틀을 제공한다.

  • 책에 나온 이 문장의 의미를 잘 이해하기 어려웠었는데, 이번 장을 읽고 어느정도 이해가 되었다.
  • 이 장에서 실세계의 객체를 도메인 모델링에서 사용한 객체로 보았고, 객체지향은 도메인 모델을 은유해 소프트웨어 객체를 만들기고 이러한 특성을 바로 연결완전성이라고 하는 것이다.
  • 즉, 연결완전성은 모델에서 코드로의 매끄러운 흐름을 의미한다.
  • 따라서 실세계의 사물(도메인 모델)을 기반으로 소프트웨어 객체를 식별하고 구현까지 이어간다는 개념이 객체지향 설계의 핵심 사상인 연결완전성을 설명하는데 적합한 틀을 제공하는 것이 맞는 것 같다.


  • 그런데 책에서 연결완전성과 표현적 차이가 동등한 의미처럼 나온다.

객체지향의 이러한 특징을 연결완전성, 또는 표현적 차이라고 함

  • 그런데 또 소프트웨어 객체와 현실 객체 사이의 의미적 거리를 표현적 차이 또는 의미적 차이라고 한다.
  • 그럼 실세계 객체와 소프트웨어 객체의 표현적 차이를 줄이는 것이 연결완전성인 것 아닌가?


  • 이 부분은 그냥 표현적 차이를 줄이는 것이 객체지향의 특징이고 이를 연결완전성이라고 한다고 말하고 싶은 것 같다.

results matching ""

    No results matching ""